【iOSDC Japan 2024 レポート】DAY 1「Core Audio徹底解剖」を聞いてきた。
はじめに
年に一度のiOSエンジニアの為のお祭りiOSDC Japan 2024に参加しています。
せっかくなので、参加したセッションのレポートを書きたいと思います。
Core Audio徹底解剖
登壇者
- entakuさん
概要
みなさんはCore Audioを利用してiOSで音声を扱ったことはありますか?
iOSではCoreAudioをはじめ、AVAudioPlayer/AVAudioRecorderやAVAudioEngineなどさまざまな音声を扱うAPIが存在しますが、どのAPIを使ってどのような音声処理ができるのか?を語られることは少ないと思います。このセッションでは、オーディオデータの取得と処理技術、リアルタイム録音技術、再生技術を学び、iOSアプリケーションのオーディオ機能を強化するための実践的な例とベストプラクティスを紹介します。
本セッションを聴き終わった際にはあなたもiOSで音声処理を試してみたくなることでしょう
- Core Audioの理解:
- Core Audioのアーキテクチャの概要
- iOSオーディオスタックにおけるCore Audioの役割
- オーディオデータの取得と処理:
- オーディオデータの取得方法とその処理
- サンプルレート、ビット深度、チャンネル数の基本概念
- 高度なオーディオ技術:
- リアルタイムオーディオ録音の実装:
- 効率的なバッファ管理とデータ転送
- 音声エフェクトの実装と管理
- オーディオエフェクトの追加と調整
- 実践的な例とデモ:
- 実際のコードを用いたデモ
- 実践的なサンプルプロジェクトの紹介
引用: fortee
資料
感想
今回はCoreAudio
を解剖していくというテーマのトークでした。全ての音声機能を掘り下げていくことは20分では難しいので音声録音機能にフォーカスして解剖を進めていました。
今回作成されたサンプルコードはGitHubで見ることができます。
音声録音機能を下記のAudio APIで実際に書いて解説いただけました。
- AVAudioRecorder (AVFoundation)
- AVAudioEngine (AVFoundation)
- AudioQueueServices (CoreAudio)
- Audio Unit (CoreAudio)
AVAudioRecorder
辺りはまだ見覚えのあるコードが出てくるのですが、上記のAPIを上から順に進んでいけば行くほど実装が複雑になっていきました。その代わりに処理を柔軟性は向上しているように感じました。
実際に音声系で何か作る場合も上から順に試していき、難しそうなら下に降りていくやり方を採用していきたいと思います。
最後の応用編では、音声録音以外での事例も紹介がありました。
- 音量の見える化
- 音声のリアルタイムアップロード
- 文字起こし
その昔、SFSpeechRecognizer
を使って、声で子どもにレゴ電車を操作してもらうというアプリを作った機能が蘇り、久々にまた遊んでみるのも楽しそうだなと感じました。
具体的なAPIやサンプルコードが紹介され、実際の実装方法を詳しく解説していただきました。抽象度の高いAPIから低いAPIまで、幅広い層での音声処理を理解できる貴重な内容でした。ありがとうございました!
参考文献
おわりに
音声処理をすることになったら、またこのセッションと参考文献をみることにします。